package me.zhengjie.sqlservice.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import me.zhengjie.mapper.WcsFluentFrameConfigMapper;
import me.zhengjie.pojo.entity.WcsFluentFrameConfig;
import me.zhengjie.sqlservice.WcsFluentFrameConfigService;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@RequiredArgsConstructor
public class WcsFluentFrameConfigServiceImpl extends ServiceImpl<WcsFluentFrameConfigMapper, WcsFluentFrameConfig> implements WcsFluentFrameConfigService {

    private final WcsFluentFrameConfigMapper wcsFluentFrameConfigMapper;

    @Override
    public List<WcsFluentFrameConfig> selectAll() {
        return wcsFluentFrameConfigMapper.selectList(null);
    }

//    @Override
//    public boolean updateSortingContainerCode(Integer id, String sortingContainerCode) {
//        LambdaUpdateWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
//        wcsFluentFrameConfigLambdaUpdateWrapper.set(WcsFluentFrameConfig::getSortingContainerCode,sortingContainerCode)
//                .eq(WcsFluentFrameConfig::getId,id);
//        return wcsFluentFrameConfigMapper.update(null,wcsFluentFrameConfigLambdaUpdateWrapper) >0;
//    }
//
//    @Override
//    public WcsFluentFrameConfig selectSortingContainerCode(String sortingContainerCode) {
//        LambdaQueryWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
//        wcsFluentFrameConfigLambdaQueryWrapper.eq(WcsFluentFrameConfig::getSortingContainerCode,sortingContainerCode);
//        return wcsFluentFrameConfigMapper.selectOne(wcsFluentFrameConfigLambdaQueryWrapper);
//    }

    @Override
    public List<WcsFluentFrameConfig> selectStorageRegion(String storageRegion) {
        LambdaQueryWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsFluentFrameConfigLambdaQueryWrapper.eq(WcsFluentFrameConfig::getDeviceIp,storageRegion);
        return wcsFluentFrameConfigMapper.selectList(wcsFluentFrameConfigLambdaQueryWrapper);
    }

    @Override
    public boolean updateSize(Integer id, Integer size) {
        LambdaUpdateWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        wcsFluentFrameConfigLambdaUpdateWrapper.set(WcsFluentFrameConfig::getSize,size)
                .eq(WcsFluentFrameConfig::getId,id);
        return wcsFluentFrameConfigMapper.update(null,wcsFluentFrameConfigLambdaUpdateWrapper) >0;
    }

    @Override
    public WcsFluentFrameConfig selectStorageCode(String storageCode) {
        LambdaQueryWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsFluentFrameConfigLambdaQueryWrapper.eq(WcsFluentFrameConfig::getStorageCode,storageCode);
        return wcsFluentFrameConfigMapper.selectOne(wcsFluentFrameConfigLambdaQueryWrapper);
    }

    @Override
    public List<WcsFluentFrameConfig> selectSingLayer(int singleOrDouble) {
        LambdaQueryWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsFluentFrameConfigLambdaQueryWrapper.eq(WcsFluentFrameConfig::getSingleOrDouble,singleOrDouble);
        return wcsFluentFrameConfigMapper.selectList(wcsFluentFrameConfigLambdaQueryWrapper);
    }

    @Override
    public boolean updateWritePlc(Integer id, int writePlc) {
        LambdaUpdateWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        wcsFluentFrameConfigLambdaUpdateWrapper.set(WcsFluentFrameConfig::getWritePlc,writePlc)
                .eq(WcsFluentFrameConfig::getId,id);
        return wcsFluentFrameConfigMapper.update(null,wcsFluentFrameConfigLambdaUpdateWrapper) >0;
    }

    @Override
    public List<WcsFluentFrameConfig> selectDeviceIp(String deviceIp) {
        LambdaQueryWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsFluentFrameConfigLambdaQueryWrapper.eq(WcsFluentFrameConfig::getDeviceIp,deviceIp);
        return wcsFluentFrameConfigMapper.selectList(wcsFluentFrameConfigLambdaQueryWrapper);
    }

    @Override
    public boolean updateMode(String deviceIp, Integer mode) {
        LambdaUpdateWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        wcsFluentFrameConfigLambdaUpdateWrapper.set(WcsFluentFrameConfig::getMode,mode)
                .eq(WcsFluentFrameConfig::getDeviceIp,deviceIp);
        return wcsFluentFrameConfigMapper.update(null,wcsFluentFrameConfigLambdaUpdateWrapper)>0;
    }

    @Override
    public WcsFluentFrameConfig selectSortingStorage(String storageCode) {
        LambdaQueryWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsFluentFrameConfigLambdaQueryWrapper.eq(WcsFluentFrameConfig::getSortingStorage,storageCode);
        return wcsFluentFrameConfigMapper.selectOne(wcsFluentFrameConfigLambdaQueryWrapper);
    }

    @Override
    public WcsFluentFrameConfig selectInboundStorageCode(String inboundStorageCode) {
        LambdaQueryWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
        wcsFluentFrameConfigLambdaQueryWrapper.eq(WcsFluentFrameConfig::getInboundStorageCode,inboundStorageCode);
        return wcsFluentFrameConfigMapper.selectOne(wcsFluentFrameConfigLambdaQueryWrapper);
    }

    @Override
    public boolean updateWorkstationMode(String workstation, Integer mode) {
        LambdaUpdateWrapper<WcsFluentFrameConfig> wcsFluentFrameConfigLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        wcsFluentFrameConfigLambdaUpdateWrapper.set(WcsFluentFrameConfig::getMode,mode)
                .eq(WcsFluentFrameConfig::getDeviceIp,workstation);
        return wcsFluentFrameConfigMapper.update(null,wcsFluentFrameConfigLambdaUpdateWrapper)>0;
    }
}
